home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 151-175 / scopedisk168 / asmmacros / am_02 / allocmem.i next >
Text File  |  1995-03-19  |  2KB  |  77 lines

  1.      NOLIST
  2. AllocMem    MACRO              ; 13 Sept 88
  3. *------------------------------; Start of AllocMem macro.
  4.      NOLIST
  5.      IFC "\2","D"              ; If \3 uses direct mode, then.
  6.      LIST
  7.                                ; Put the block size in D0.
  8.      MOVE.L #\3,D0
  9.      NOLIST
  10.      ENDC
  11.      IFC "\2","I"              ; If \3 uses indirect mode, then.
  12.      LIST
  13.                                ; Put the block size in D0.
  14.      NOLIST
  15.      IFEQ ReEntrant-1
  16.      LIST
  17.      MOVE.L \3(A5),D0
  18.      NOLIST
  19.      ENDC
  20.      IFNE ReEntrant-1
  21.      LIST
  22.      MOVE.L \3,D0
  23.      NOLIST
  24.      ENDC
  25.      ENDC
  26.      LIST
  27.                                ; Save the block size at <MemBlockName>.Size
  28.      NOLIST
  29.      IFEQ ReEntrant-1
  30.      LIST
  31.      DefDS \1.Size,1
  32.      MOVE.L D0,\1.Size(A5)
  33.      NOLIST
  34.      ENDC
  35.      IFNE ReEntrant-1
  36.      LIST
  37.      MOVE.L D0,\1.Size
  38.      DS_BSS \1.Size,1,.L
  39.      NOLIST
  40.      ENDC
  41.      IFNE NARG-4               ; If \4 is not given, then
  42.      LIST
  43.      CLR.L D1                  ; Accept any memory.
  44.      NOLIST
  45.      ENDC
  46.      IFEQ NARG-4               ; If \4 is given, then
  47. PUBLIC SET 1
  48. CHIP   SET 2
  49. CLEAR  SET $10000
  50.      LIST
  51.                                ; Set the appropriate bits in D1.
  52.      MOVE.L #\4,D1
  53.      NOLIST
  54.      ENDC
  55.      LIST
  56.      CallLib AllocMem,exec     ; Call AllocMem.
  57.                                ; Save the address of the memory block at
  58.                                ;  <MemBlockName>.Adr
  59.      NOLIST
  60.      IFEQ ReEntrant-1
  61.      LIST
  62.      DefDS \1.Adr,1
  63.      MOVE.L D0,\1.Adr(A5)
  64.      NOLIST
  65.      ENDC
  66.      IFNE ReEntrant-1
  67.      LIST
  68.      MOVE.L D0,\1.Adr
  69.      DS_BSS \1.Adr,1,.L
  70.      NOLIST
  71.      ENDC
  72.      LIST
  73.      TST.L D0                  ; Make the zero flag indicate failure.
  74. *------------------------------; End of AllocMem macro.
  75.      ENDM
  76.      LIST
  77.